﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data;

namespace PushService
{
    // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom d'interface "IService1" à la fois dans le code et le fichier de configuration.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        Client SubscribeMyPhone(Guid phoneID, string channelURI);

        [OperationContract]
        void PushRawData(string rawMessage);

        [OperationContract]
        void PushRawDataUnique(string rawMessage, Uri ClientURI);

        [OperationContract]
        void PushToast(string toastTitle, string toastMessage);

        [OperationContract]
        void PushToastUnique(string ToastTitle, string ToastMessage, Uri ClientURI);

        [OperationContract]
        void PushTileUpdate(string tileTitle, int tileCount, string tileImageURI);

        [OperationContract]
        void PushTileUpdateUnique(string TileTitle, int TileCount, string TileImageURL, Uri ClientURI);

        [OperationContract]
        void ValidateDemande(int IDDemande, int IDTaxi);

        [OperationContract]
        void AnnulerDemandeClient(int IDDemande);

        [OperationContract]
        void AnnulerDemandeTaxi(int IDDemande);

        [OperationContract]
        List<Client> SelectAllClient();

        [OperationContract]
        Client SelectAClient(Guid phoneID);

        [OperationContract]
        Client SelectAClientByID(int IDClient);
        
        [OperationContract]
        bool InsertClient(Guid IDClient, Uri URIClient);

        [OperationContract]
        bool UpdateClient(Guid IDClient, Uri URIClient, Boolean Notification);

        [OperationContract]
        bool UpdateClientURI(Guid IDClient, Uri URIClient);

        [OperationContract]
        List<Demande> SelectAllDemandeClient();

        [OperationContract]
        Demande SelectADemandeClient(int IDDemande);

        [OperationContract]
        bool InsertDemandeClient(int IDClient, Double LongitudeOrigine, Double LatitudeOrigine, string AdresseOrigine, Double LongitudeDestination, Double LatitudeDestination, string AdresseDestination, int NombrePersonne);

        [OperationContract]
        bool UpdateDemandeClient(int IDDemande, int IDTaxi, int IDEtat, Double LongitudeOrigine, Double LatitudeOrigine, string AdresseOrigine, Double LongitudeDestination, Double LatitudeDestination, string AdresseDestination, int NombrePersonne, DateTime DateFin);

        [OperationContract]
        bool UpdateTaxiEtatDemandeClient(int IDDemande, int IDTaxi, int IDEtat);

        [OperationContract]
        bool UpdateEtatDemandeClient(int IDDemande, int IDEtat);

        [OperationContract]
        Taxi SelectATaxiByID(int IDTaxi);

        [OperationContract]
        Taxi InsertTaxi(Guid IDTaxi, Uri URITaxi, string MdP, decimal LongitudeTaxi, decimal LatitudeTaxi);

        [OperationContract]
        bool UpdateTaxiLocalisation(Guid IDTaxi, decimal LongitudeTaxi, decimal LatitudeTaxi);

        [OperationContract]
        Taxi ConnectTaxi(Guid IDTaxi, string MdP, decimal LongitudeTaxi, decimal LatitudeTaxi);


    }

}
